package com.tanhua.common.utils.oss;

import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;

public class DirUtil {
	//	目录分离算法工具类
	public static void main(String[] args) {
		String filename = "总结.doc";
		System.out.println(getRandomDir(filename));
	}

	/**
	 * 实现两级目录
	 *
	 * @param filename
	 * @return 二级目录  如：/2/4
	 */
	public static String getRandomDir(String filename) {
		// 获取唯一文件名的hashcode值
		int hashcode = filename.hashCode();
		// 和0xf进行&操作
		int dir1 = hashcode & 0xf;
		// 先右移4位，再和0xf进行&操作
		int dir2 = (hashcode >>> 4) & 0xf;
		String result = "/"+dir1+"/"+dir2;
		return result;
	}

	/**
	 * 实现两级目录
	 * @param sourceFileName
	 * @return 四级目录 images/yyyy/MM/dd/xxxxxxx.jpg  文件名分离
	 */
	public static String getFilePath(String sourceFileName) {
		// 获取当前时间
		DateTime dateTime = new DateTime();
		// lufei.jpg
		// images/yyyy/MM/dd/xxxxxxx.jpg
		// 是把文件名称和目录分离一起做了
		return "images/" + dateTime.toString("yyyy")
				+ "/" + dateTime.toString("MM") + "/"
				+ dateTime.toString("dd") + "/" + System.currentTimeMillis() +
				RandomUtils.nextInt(100, 9999) + "." +
				StringUtils.substringAfterLast(sourceFileName, ".");
	}
}